#include <condition_variable>
#include <iostream>
#include <string>
#include <chrono>
#include <random>
#include <thread>

#include "datareader.h"
#include "dataareader.h"
#include "databreader.h"

int main()
{
    unsigned int deviceAcount;
    bool errorEndA;
    int deviceBcount;
    bool errorEndB;

    std::cout << "Введите количество операций чтения для устройства А:";
    std::cin >> deviceAcount;
    std::cout << "Штатный выход для устройства А? (1 - да / 0 нет):";
    std::cin >> errorEndA;

    std::cout << "Введите количество операций чтения для устройства B:";
    std::cin >> deviceBcount;
    std::cout << "Штатный выход для устройства B? (1 - да / 0 нет):";
    std::cin >> errorEndB;

    Lab1::DataReader * reader = new Lab1::DataReader();

    Lab1::DataAReader * dataAReader = new Lab1::DataAReader( reader );
    Lab1::DataBReader * dataBReader = new Lab1::DataBReader( reader );

    std::thread deviceAthread( &Lab1::DataAReader::start, dataAReader, deviceAcount, errorEndA );
    std::thread deviceBthread( &Lab1::DataBReader::start, dataBReader, deviceBcount, errorEndB );

    reader->start();

    if( deviceAthread.joinable())
    {
        deviceAthread.join();
    }

    if( deviceBthread.joinable())
    {
        deviceBthread.join();
    }

    return 0;
}
